package renderer;

import model.Simulation;

public interface RenderMode {
	
	/**
	 * Affichage de la source courrante.
	 * Ne peut etre appeler que dans un processus 
	 * dans le quel on possede le contexte sur OpenGL
	 */
	public void render();
	
	/**
	 * Changemenr de source
	 * @param s nouvelle source a afficher
	 */
	//public void setSource(Source s);
	
	/**
	 * Deplacement de l'affichage
	 * @param dx, dy deplacement en pixels
	 */
	public void translate(int dx, int dy);
	
	/**
	 * Changement de zoom
	 * @param dz (+1 ou -1 pour zoomer ou dezoomer) 
	 */
	public void zoom(int dz);
	
	/**
	 * Permet d'indiquer les dimensions d'affichage.
	 * Appelee par le Renderer.
	 * @param w largeur de la zone d'affichage.
	 * @param h hauteur de la zone d'affichage.
	 */
	public void setViewPort(int w, int h);
	
	/**
	 * Recalcule le zoom et la translation de facon a ce que 
	 * le graphe apparait entierement.
	 * Appelee par le Renderer.
	 */
	public void rescale();
	
	/**
	 * Choix de la simulation a afficher
	 * @param s simulation a afficher
	 */
	public void setSimulation(Simulation s);
	
	/**
	 * Ajustemenr du zoom de facon a afficher la simulation en entier
	 */
	public void adjust();
	
	/**
	 * Choix de fourmi dont la trace sera affichee
	 * @param i indice du fourmi dans la simulation
	 */
	public void setFourmi(int i);
	
}
